using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Ant
{
    public partial class Form2 : Form
    {
        // 请替换为你从讯飞控制台获取的 API 密钥
        private static readonly string apiPassword = "QFpFTNlkIEULpbIjAmOq:kHRxVSgbLMvrlwWQOffp";  // 替换为你的 API 密钥
        private static readonly string apiUrl = "https://spark-api-open.xf-yun.com/v1/chat/completions";

        public Form2()
        {
            InitializeComponent();
            button1.Click += SendButton_Click;
            richTextBox1.ReadOnly = true;
  
        }

        private async void SendButton_Click(object sender, EventArgs e)
        {
            string userInput = input1.Text.Trim();
            if (string.IsNullOrEmpty(userInput))
            {
                MessageBox.Show("请输入问题！", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // 显示用户输入
            richTextBox1.AppendText($"我: {userInput}\n\n");
            

            // 异步调用讯飞星火大模型API获取AI回应
            var result = await CallXunFeiAI(userInput);

            // 解析JSON，提取content字段
            var responseJson = JsonConvert.DeserializeObject<dynamic>(result);

            // 获取AI的回应内容
            string aiContent = responseJson.choices[0].message.content;

            // 显示AI回应
            richTextBox1.AppendText($"AI: {aiContent}\n\n");


            // 清空输入框
            input1.Clear();
        }

        private async Task<string> CallXunFeiAI(string userInput)
        {
            try
            {
                using (var client = new HttpClient())
                {
                    // 设置请求头
                    client.DefaultRequestHeaders.Add("Authorization", "Bearer " + apiPassword); // 设置认证信息

                    // 请求内容，JSON 格式
                    var requestData = new
                    {
                        model = "generalv3.5",  // 使用的模型版本
                        messages = new[]
                        {
                            new
                            {
                                role = "user",  // 用户角色
                                content = userInput  // 用户输入的内容
                            }
                        },
                        stream = false  // 是否启用流式返回，默认非流式
                    };

                    // 将对象转换为 JSON 字符串
                    var jsonRequest = JsonConvert.SerializeObject(requestData);

                    // 创建请求内容
                    var content = new StringContent(jsonRequest, Encoding.UTF8, "application/json");

                    // 发送 POST 请求
                    var response = await client.PostAsync(apiUrl, content);

                    // 判断请求是否成功
                    if (response.IsSuccessStatusCode)
                    {
                        // 获取响应内容
                        var responseContent = await response.Content.ReadAsStringAsync();
                        return responseContent;
                    }
                    else
                    {
                        // 请求失败，输出错误状态码和消息
                        var errorContent = await response.Content.ReadAsStringAsync();
                        return $"请求失败: {response.StatusCode}\n错误信息: {errorContent}";
                    }
                }
            }
            catch (Exception ex)
            {
                // 捕获并输出异常
                return $"发生错误: {ex.Message}";
            }
        }
    }
}
